package com.hanter.android.radlib.saf;

import android.net.Uri;

import java.io.File;
import java.io.IOException;

public interface SafManager {

    /**
     * 获取对应类型的路径Uri，在MediaStore Api中使用
     */
    Uri getMediaContentUri(@MediaType String type);

    Uri getMediaContentUri(@MediaType String type, boolean external);

    /**
     * 创建指定类型目录下的文件
     * @param type Environment.DIRECTORY_
     * @param fileName 文件名，可以包含路径
     */
    Uri createMediaUri(@MediaType String type, String fileName) throws IOException;

    /**
     * 创建指定类型目录下的文件
     * @param type Environment.DIRECTORY_
     * @param fileName 文件名，可以包含路径
     * @param mimeType 文件的mimeType，可以为null，会根据type生成默认类型
     */
    Uri createMediaUri(@MediaType String type, String fileName, String mimeType) throws IOException;

    Uri createImageUri(String fileName) throws IOException;

    /**
     * 创建图片Uri
     * @param fileName 图片文件名
     * @param mimeType 图片的mimeType，传空默认 image/jpeg
     * @throws IOException 当没有外部存储时，IO 异常
     */
    Uri createImageUri(String fileName, String mimeType) throws IOException;

    /**
     * 获取App私有的媒体目录
     * @param type {@link android.os.Environment} DIRECTORY_ 开头的目录
     * @param external 是否外部存储
     * @return 媒体目录
     */
    File getAppMediaDirectory(String type, boolean external);

    /**
     * 获取App的Files目录，使用内部还是外部
     * @param external 内部存储
     */
    File getAppFilesDirectory(boolean external);

}
